<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
<%@ attribute name="id" type="java.lang.String" required="true" description="编号"%>
<%@ attribute name="name" type="java.lang.String" required="true" description="隐藏域名称（ID）"%>
<%@ attribute name="value" type="java.lang.String" required="true" description="隐藏域值（ID）"%>
<%@ attribute name="labelName" type="java.lang.String" required="true" description="输入框名称（Name）"%>
<%@ attribute name="labelValue" type="java.lang.String" required="true" description="输入框值（Name）"%>
<%@ attribute name="title" type="java.lang.String" required="true" description="选择框标题"%>
<%@ attribute name="url" type="java.lang.String" required="true" description="树结构数据地址"%>
<%@ attribute name="checked" type="java.lang.Boolean" required="false"
    description="是否显示复选框，如果不需要返回父节点，请设置notAllowSelectParent为true"%>
<%@ attribute name="extId" type="java.lang.String" required="false" description="排除掉的编号（不能选择的编号）"%>
<%@ attribute name="isAll" type="java.lang.Boolean" required="false"
    description="是否列出全部数据，设置true则不进行数据权限过滤（目前仅对Office有效）"%>
<%@ attribute name="notAllowSelectRoot" type="java.lang.Boolean" required="false" description="不允许选择根节点"%>
<%@ attribute name="notAllowSelectParent" type="java.lang.Boolean" required="false" description="不允许选择父节点"%>
<%@ attribute name="module" type="java.lang.String" required="false"
    description="过滤栏目模型（只显示指定模型，仅针对CMS的Category树）"%>
<%@ attribute name="selectScopeModule" type="java.lang.Boolean" required="false"
    description="选择范围内的模型（控制不能选择公共模型，不能选择本栏目外的模型）（仅针对CMS的Category树）"%>
<%@ attribute name="allowClear" type="java.lang.Boolean" required="false" description="是否允许清除"%>
<%@ attribute name="allowInput" type="java.lang.Boolean" required="false" description="文本框可填写"%>
<%@ attribute name="cssClass" type="java.lang.String" required="false" description="css样式"%>
<%@ attribute name="cssStyle" type="java.lang.String" required="false" description="css样式"%>
<%@ attribute name="hideBtn" type="java.lang.Boolean" required="false" description="是否显示按钮"%>
<%@ attribute name="disabled" type="java.lang.String" required="false"
    description="是否限制选择，如果限制，设置为disabled"%>
<%@ attribute name="dataMsgRequired" type="java.lang.String" required="false" description=""%>
<input id="${id}Id" name="${name}" type="hidden" value="${value}" />
<div class="input-group">
    <input id="${id}Name" 
            name="${labelName}" 
            ${allowInput ? '' : 'readonly="readonly"'} 
            type="text" 
            value="${labelValue}"
            data-msg-required="${dataMsgRequired}" 
            class="form-control ${cssClass}" 
            style="${cssStyle}">
    <a id="${id}Button" 
        href="javascript:void(0);" 
        class="btn ${disabled} ${hideBtn ? 'hide-element' : 'btn-default'} input-group-addon">
        <i class="glyphicon glyphicon-search"></i>
    </a>
</div>
<script>
    $("#${id}Button, #${id}Name").click(function(){
        // 是否限制选择，如果限制，设置为disabled
        if ($("#${id}Button").hasClass("disabled")) {
            return true;
        }
        // 正常打开:
        top.dialog({
			id : "treeSelect",
			title : "选择${title}",
			url : "${ctx}/tag/treeselect?url="
					+ encodeURIComponent("${url}")
					+ "&module=${module}&checked=${checked}&extId=${extId}&isAll=${isAll}&selectIds="
					+ $("#${id}Id").val(),
			width : 350,
			height : 450,
			button : [{
				id : 'ok',
				value : '选择',
            	callback : function () {
            		var tree = top.$("div[role=dialog]").find("iframe")[0].contentWindow.tree;
                    var ids = [], names = [], nodes = [];
                    if ("${checked}" == "true"){
                        nodes = tree.getCheckedNodes(true);
                    } else {
                        nodes = tree.getSelectedNodes();
                    }
                    for(var i = 0; i < nodes.length; i++) { //<c:if test="${checked && notAllowSelectParent}">
                        if (nodes[i].isParent){
                            continue; // 如果为复选框选择，则过滤掉父节点
                        }//</c:if><c:if test="${notAllowSelectRoot}">
                        if (nodes[i].level == 0){
                            showTip("不能选择根节点（" + nodes[i].name + "）请重新选择。");
                            return false;
                        }//</c:if><c:if test="${notAllowSelectParent}">
                        if (nodes[i].isParent){
                        	showTip("不能选择父节点（" + nodes[i].name + "）请重新选择。");
                            return false;
                        }//</c:if><c:if test="${not empty module && selectScopeModule}">
                        if (nodes[i].module == ""){
                        	showTip("不能选择公共模型（" + nodes[i].name + "）请重新选择。");
                            return false;
                        }else if (nodes[i].module != "${module}"){
                        	showTip("不能选择当前栏目以外的栏目模型，请重新选择。");
                            return false;
                        }//</c:if>
                        ids.push(nodes[i].id);
                        names.push(nodes[i].name);//<c:if test="${!checked}">
                        break; // 如果为非复选框选择，则返回第一个选择 </c:if>
                    }
                    $("#${id}Id").val(ids.join(",").replace(/u_/ig, ""));
                    $("#${id}Name").val(names.join(","));
            	},
            	autofocus : true
			},//<c:if test="${allowClear}">
			{
				value : '清除',
            	callback : function () {
            		$("#${id}Id").val("");
                    $("#${id}Name").val("");
            	}
			},//</c:if>
			{
				value : '关闭'
			}],
            onclose : function () {
				if (this.returnValue) {
				}
				this.remove();
			}
		}).show();
    });

</script>